Miles Sound System SDK 7.2a

Creative's EAX 4 Properties

Discussion

The EAX 4 provider publishes many driver-level and sample-level properties that allow game developers to set interesting room styles. These properties include all of the EAX 3 properties too.

But more interesting are the new EAX 4 features, which provide hardware support for many common DSP filters. EAX does this by providing multiple "slots" that you can load a DSP filter into. You then direct your sound effects into one of these slots to hear the filtered sound.

There are currently four of these slots, but the first two are fixed-function: slot 0 is environmental reverb, and slot 1 is a chorus filter. You can load other filters into slots 2 and 3. You can even have multiple environmental reverbs, one in slot 0, one is slot 2 or 3, for example.

Each 3D sound can only be routed to either no slots, one slot, or two slots at a time. That means you can have a single sound being flanged and ring modulated at once, for example.

Miles massively refactors the EAX 4 API (which is otherwise quite complicated). To load a filter, you simply set the parameters for that filter - this will first load the filter, and then set the parameters. To activate a filter, you simply set the volume - this will send the sound to the filter and then set the volume level.

All of the filters are loaded by passing a particular structure to the AIL_output_filter_driver_property function. Each structure is specific to the filter that you are trying to load. We don't change these structures at all from the EAX versions, so you can also read the EAX docs for more info on each filter.

The best way to learn how to use the EAX 4 features is to check out the EAX4EXAM.CPP demo program - it is an extremely simple and clear example that shows how to use each of the EAX 4 filters. Also, be sure to review the How do I use multi-channel sound output in Miles? FAQ in conjunction with the material below.

When an HDIGDRIVER is opened with MSS_MC_EAX4 as the output channel specification, the following driver-level properties are accessible via AIL_output_filter_driver_property:

All of the EAX driver-level properties.

All of the EAX 2 driver-level properties.

All of the EAX 3 driver-level properties.

"EAX4 Reverb parameters": this preference takes a pointer to a EAX_REVERB structure. When you set this preference, it first loads the Reverb filter (if it hasn't already been loaded), and then it updates each of your settings. The Reverb filter can be loaded into slots 0, 2 and/or 3 - it is the basic EAX environmental reverb filter. See the EAX 4 documentation for more details on this complicated filter.

"EAX4 Auto Gain parameters": this preference takes a pointer to a EAX_AUTOGAIN structure. When you set this preference, it first loads the Auto Gain filter (if it hasn't already been loaded), and then it updates each of your settings. The Auto Gain filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this simple filter.

"EAX4 Autowah parameters": this preference takes a pointer to a EAX_AUTOWAH structure. When you set this preference, it first loads the Autowah filter (if it hasn't already been loaded), and then it updates each of your settings. The Autowah filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this basic filter.

"EAX4 Chorus parameters": this preference takes a pointer to a EAX_CHORUS structure. When you set this preference, it first loads the Chorus filter (if it hasn't already been loaded), and then it updates each of your settings. The Chorus filter can be loaded into slots 1, 2 and/or 3. See the EAX 4 documentation for more details on this common filter.

"EAX4 Distortion parameters": this preference takes a pointer to a EAX_DISTORTION structure. When you set this preference, it first loads the Distortion filter (if it hasn't already been loaded), and then it updates each of your settings. The Distortion filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 Echo parameters": this preference takes a pointer to a EAX_ECHO structure. When you set this preference, it first loads the Echo filter (if it hasn't already been loaded), and then it updates each of your settings. The Echo filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 Equalizer parameters": this preference takes a pointer to a EAX_EQUALIZER structure. When you set this preference, it first loads the Equalizer filter (if it hasn't already been loaded), and then it updates each of your settings. The Equalizer filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 Flanger parameters": this preference takes a pointer to a EAX_FLANGER structure. When you set this preference, it first loads the Flanger filter (if it hasn't already been loaded), and then it updates each of your settings. The Flanger filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 FShifter parameters": this preference takes a pointer to a EAX_FSHIFTER structure. When you set this preference, it first loads the Frequency shifter filter (if it hasn't already been loaded), and then it updates each of your settings. The Frequency shifter filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 VMorpher parameters": this preference takes a pointer to a EAX_VMORPHER structure. When you set this preference, it first loads the Vocal Morpher filter (if it hasn't already been loaded), and then it updates each of your settings. The Vocal Morpher filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 PShifter parameters": this preference takes a pointer to a EAX_PSHIFTER structure. When you set this preference, it first loads the Pitch Shifter filter (if it hasn't already been loaded), and then it updates each of your settings. The Pitch Shifter filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

"EAX4 RModulator parameters": this preference takes a pointer to a EAX_RMODULATOR structure. When you set this preference, it first loads the Ring Modulator filter (if it hasn't already been loaded), and then it updates each of your settings. The Ring Modulator filter can be loaded into slots 2 and/or 3. See the EAX 4 documentation for more details on this filter.

The EAX 4 sample-level properties include:

All of the EAX 2 sample-level properties.

All of the EAX 3 sample-level properties.

"EAX4 slot volumes": this preference takes a pointer to a EAX_SAMPLE_SLOT_VOLUMES structure. It will both activate the filter for this sample and set your volume levels.

"Get EAX4 slot volumes": this preference takes a pointer to a EAX_SAMPLE_SLOT_VOLUMES structure and fills it with the current hardware settings.


Group: Creative EAX 2, 3, and 4 Providers
Related Functions: AIL_output_filter_driver_property
Related Structures: EAX_AUTOGAIN, EAX_AUTOWAH, EAX_CHORUS, EAX_DISTORTION, EAX_ECHO, EAX_EQUALIZER, EAX_FLANGER, EAX_FSHIFTER, EAX_PSHIFTER, EAX_REVERB, EAX_RMODULATOR, EAX_SAMPLE_SLOT_VOLUMES, EAX_VMORPHER
Related FAQs: How do I use multi-channel sound output in Miles?

For technical support, e-mail Miles3@radgametools.com
© Copyright 1991-2007 RAD Game Tools, Inc. All Rights Reserved.